package b.设计题;

//--atoi
public class 手写parseInt {

    public int my_atoi(String s){
        if(s.length()==0)return 0;//""
        char[] c = s.toCharArray();

        //1、去掉前导空格
        int i=0;
        while(i<s.length() && c[i]==' ')i++;
        if(i>=s.length())return 0;

        //2、取正负号（默认正）
        int flag=1;
        if(c[i]=='-'){
            flag=-1;
            i++;//移动到数字位
        }
        else if(c[i]=='+'){
            flag=1;
            i++;
        }
        else flag=1;

        //3、123ea4567,只要第一次出现英文字母前面的123
        long res = 0L;
        while(i<s.length() && Character.isDigit(c[i])){
            res=res*10+(c[i++]-'0');
            //res超出int范围时：题干要求返回Int能表示的最值
            if(res>Integer.MAX_VALUE){
                if(flag==-1)return Integer.MIN_VALUE;
                return Integer.MAX_VALUE;
            }
        }
        return flag*(int)res;
    }

}
